package com.formula.datastructure.exercise.tree;

import com.formula.datastructure.util.DataUtil;

/**
 * 主要逻辑在node
 * 其实就是插入有难度
 * 记得先插入, 再调整
 * 两个重点
 * 计算高度
 * 调整: 调整核心思想就是在插入新的节点后, parent失衡, 然后3个节点调整
 * 核心方法都写在node里面
 */
public class AVLTree {
    private AVLNode root;
    private int size;

    public void addNode(Integer input) {
        AVLNode newNode = new AVLNode(input);
        if (root == null) {
            root = newNode;
        } else {
            root.addChild(newNode);
        }
        size++;
    }

    public int getSize() {
        return size;
    }

    public static void main(String[] args) {
        Integer[] array = DataUtil.genArray(11, 50);
        DataUtil.printArray(array);
        AVLTree tree = new AVLTree();
        for (Integer item : array) {
            tree.addNode(item);
        }
        System.out.println();
    }
}
